package tech.aistar.corejava.day14.homework;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

/**
 * @Author: lya
 * @Description: 本类的作用描述:
 * @CreateDate: 2019/8/3
 * @Version: 1.0
 */
public class Demo01 {
    public static void main(String[] args) {
        count("src/tech/aistar/corejava/day14/calcCharNum.txt");
    }

    public static void count(String pathname) {
        //1.创建字节流对象
        //2.读取文件(判断参数有效性)
        //3.创建一个map集合
        //4.判断map中是否包含所需的key,
        InputStream in = null;

        Map<Character, Integer> map = new HashMap<>();//由于map集合具有,键相同,值覆盖的特性
        try {
            in = new FileInputStream(pathname);
            int b;

            if (in != null) {

                while ((b = in.read()) != -1) { //read()方法返回的是下一个数据的字节
                    char a = (char) b;  //将int型转换成字符型
                    //System.out.print(a);
                    //判断map中是否包含指定的key
                    if (map.containsKey(a)) {
                        //如果map中存在key则获取当前key的value值加1
                        map.put(a, map.get(a) + 1);
                    }else {
                        //若不存在,则直接放入map中,并把value初始为1
                        map.put(a, 1);
                    }

                }
                map.forEach((k,v) -> System.out.println(k + "(" + v +")"));
            }else {
                System.out.println("读取的文件不存在");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
